package com.own.component.common.util.encrypt.util;

import com.alibaba.fastjson2.JSON;
import com.own.component.common.util.encrypt.BaseEncryptUtil;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * Base64Util base64加密解密工具
 *
 * @author chenxueli
 * @date 2020/4/20 16:08
 */
public class Base64Util implements BaseEncryptUtil {

    /**
     * 加密
     *
     * @param content 加密内容
     * @return 加密后的内容
     */
    @Override
    public String encrypt(String content) {
        return Base64.getEncoder().encodeToString(content.getBytes(StandardCharsets.UTF_8));
    }

    /**
     * 加密
     *
     * @param content 加密内容
     * @return 加密后的内容
     */
    @Override
    public String encrypt(Object content) {
        return encrypt(JSON.toJSONString(content));
    }

    /**
     * 解密
     *
     * @param content 解密内容
     * @return 解密后的内容
     */
    @Override
    public String decrypt(String content) {
        return new String(Base64.getDecoder().decode(content));
    }

    /**
     * 解密 并转对象
     *
     * @param content 解密内容
     * @param clazz   对象
     * @return 对象
     */
    @Override
    public <T> T decrypt(String content, Class<T> clazz) {
        return JSON.parseObject(decrypt(content), clazz);
    }
}
